The Internet maintains two principal namespaces, the domain name hierarchy (e.g., ‘birds.images.wikipedia.org’), which is designed to be ‘human readable’, and the Internet Protocol (IP) address system (e.g., ‘207.142.131.242’) which is easier for computer programs to manipulate. The Domain Name System (DNS) maintains the domain namespace and provides translation services between these two principal namespaces. The (DNS) contains Internet name servers and a communications protocol.
A DNS name server is a server that stores the DNS records required for the system and responds with answers to queries against its database. FIG. 1 is a schematic diagram providing an example of the setup and components of a typical DNS system 100. A communication device 102 requires translation of a domain name. For purposes of the present example, “birds.images.wikipedia.org” is an exemplary domain name. The DNS system 100 uses a DNS recursor 108 that will resolve this domain name and return the result to the communication device 102. The DNS recursor 108 uses authoritative domain name servers 130 for resolving this domain.
The DNS is a hierarchical naming system for computers, services, or any resource connected to the Internet or a private network. The DNS associates various information with domain names assigned to each of the participants. Most importantly, the DNS translates domain names into the numerical identifiers associated with networking equipment for the purpose of locating and addressing these devices worldwide. An often-used analogy to explain the DNS is that it serves as the “phone book” for the Internet by translating human-friendly computer hostnames into IP addresses.
The DNS distributes the responsibility of assigning domain names and mapping those names to IP addresses by designating authoritative domain name servers for each domain. Authoritative domain name servers are assigned to be responsible for their particular domains, and in turn can assign other authoritative name servers for their sub-domains. In general, the DNS also stores other types of information, such as the list of mail servers that accept email for a given Internet domain.
A domain name contains one or more parts, technically referred to as labels, which are conventionally concatenated, and delimited by dots, such as ‘birds.images.wikipedia.org’. The right-most label conveys the top-level domain; for example, the domain name birds.images.wikipedia.org belongs to the top-level domain ‘org’.
The hierarchy of domains descends from right to left; each label to the left specifies a subdivision, or subdomain of the domain to the right. For example: the label ‘wikipedia’ specifies a subdomain of the ‘org’ domain, and ‘images’ is a sub domain of ‘wikipedia.org’.
A hostname is a domain name that has at least one IP address associated. For example, the domain names ‘wikipedia.org’ and ‘images.wikipedia.org’ are also hostnames, whereas the ‘org’ domain is not.
The DNS is maintained by a distributed database system. The nodes of this database system are the domain name servers. Each domain has at least one authoritative domain name server that publishes information about that domain and the name servers of any domains subordinate to it. The top of the hierarchy is served by root name servers 110, 112, which are the servers to query when looking up (resolving) a top-level domain name (TLD). When a domain name server is queried for a domain, it can return an “NS” entry, which is information about the next level name server that can service this request, or it can return an “A” entry, which is the final resolution to the domain in question.
In principle, authoritative domain name servers are sufficient for the operation of the Internet. However, with only authoritative domain name servers operating, every DNS query starts with recursive queries at the root zone of the DNS and performs a recursive operation down the levels of the domains to provide the hostname associated with the domain in question.
To improve efficiency, reduce DNS traffic across the Internet, and increase performance in end-user applications, the prior art DNS supports DNS caching by which caching DNS servers are responsible for querying the authoritative DNS servers, as well as storing the DNS query results for a period of time determined in the configuration (time-to-live) of the domain name record in question for use to answer future similar DNS requests they may receive. With this function implemented in the authoritative domain name server, user applications gain efficiency in design and operation.
The combination of DNS caching and recursive functions in a DNS recursor 108 is not mandatory, the functions can be implemented independently in servers for special purposes.
Internet service providers typically provide DNS recursors 108 with cache for their customers. In addition, many home networking routers implement DNS caches and recursors to improve efficiency in a local network.
The client-side of the DNS is referred to as a DNS resolver 106. The DNS resolver 106 is responsible for initiating and sequencing the queries that ultimately lead to a full resolution (translation) of the resource sought, e.g., translation of a domain name into an IP address.
A domain name resolver, such as a DNS recursor 108, determines the appropriate domain name servers responsible for the domain name in question by a sequence of queries starting with the right-most (top-level) domain label.
An example of such a sequence is provided below for the resolution of the domain name ‘birds.images.wikipedia.org’. The process is started when a communication application 104 sends a request to the operating system 105 to translate a domain. The operating system 105 sends a request to the DNS resolver 106. The DNS resolver 106 may or may not have a local cache to store previous DNS results. If a valid result exists in such a cache, it is returned to the communications application, otherwise, the DNS resolver 106 queries an external DNS recursor 108. The external DNS recursor 108 is configured with the known addresses of the root name servers 110, 112. This is often stored in a file which is updated periodically by an administrator from a reliable source.
The external DNS recursor 108 queries one of the root name servers 110, 112 to find the next level authoritative domain name server authoritative for this domain. For example, the root name server 110, 112 may return the authoritative domain name servers responsible for the “.org” domain in the example in FIG. 1. The external DNS recursor 108 queries the obtained next level authoritative domain name server for the domain in question, and may either receive a final answer (IP for this domain) or an address of an authoritative domain name server authoritative for the next-level domain. The external DNS recursor 108 repeats the previous step until a final IP of the domain in question is returned.
When the external DNS recursor 108 has a caching system, the external DNS recursor 108 stores the requests it made to various authoritative domain name servers 130 (requests are the domain names to be resolved). The responses received (a response received includes the IP address of the host or the IP address of the authoritative domain name servers for a sub-domain of the requested domain, the validity (TTL) for the response, as well as other information for this request) are cached by the external DNS recursor 108.
Upon receiving a new request for a domain name resolution, the external DNS recursor 108 sends the requested domain to the root name server 110, 112, obtains a response that is either the host IP of the requested domain, or an authoritative domain name server 130 that can continue the process for a sub domain of the requested domain. If a name server IP address of a sub domain is returned, it is queried for the requested domain, and either returns the host IP address of the domain, or the IP address of the authoritative domain name server of a sub domain of the requested domain, and so forth until the host IP address is received. Each of these answers from the authoritative domain name servers is typically stored in the cache of the external DNS recursor 108.
In subsequent requests to the DNS system 100, the external DNS recursor 108 sends the request to its own local cache. If all requests are answered by the local cache, then a full resolution is made very quickly. If however, one or more of the entries in the list is expired or does not exist, then the external DNS recursor 108 queries the authoritative domain name servers 130 as described above, requiring a much longer resolution time.
Where in the past each Web page on the World Wide Web (WWW) typically had all of its content coming from one or two domains, the Web has evolved such that the content on each Web page now typically comes from multiple domains, and thus there are more domain name lookups per Web page. As an example, main content comes from the main domain, advertisements come from multiple ad servers, and widgets come from social networks. This makes the DNS resolution a constraining factor on page load times. Other network activities such as emails, etc., also rely on DNS. Thus, having a faster means of resolving domain names would benefit the speed of Internet based applications such as browsing and email.
The problem in the prior art DNS systems is that once an entry in the local cache has expired, the external DNS recursor must first resolve that entry again on the network to attempt to revalidate it, before continuing the DNS resolution. After revalidation, the process with the local cache continues. It is possible that then another cache entry that is required for the resolution will be expired, and again require a lengthy network lookup.
Another problem with the prior art DNS systems, is that they only query the DNS forwarder or DNS resolver that is available on one of its physical interfaces. With the prior art it is not possible to query all DNS forwarders and resolvers known to the host machine.
Yet another problem with the prior art DNS systems is as follows. For each level of hierarchy in the domain name system for which there is an authoritative domain name server, there is typically more than one such server. The DNS system knows about the multitude of servers, but only queries one server, and tries the other one if the initial query does not get answered. Again, this is a time consuming process.
Thus, a heretofore unaddressed need exists in the industry to address the aforementioned deficiencies and inadequacies.